﻿using SD.Infrastructure.DTOBase;
using SlamDunk.MES.IAppService.DTOs.Outputs.DefinitionContext;
using SlamDunk.MES.IAppService.DTOs.Outputs.FoundationContext;
using SlamDunk.MES.IAppService.DTOs.Outputs.ResourceContext;
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace SlamDunk.MES.IAppService.DTOs.Outputs.ConfigurationContext
{
    /// <summary>
    /// 用户扩展数据传输对象
    /// </summary>
    [DataContract]
    public class UserExtensionInfo : BaseDTO
    {
        #region 人员Id —— Guid PersonId
        /// <summary>
        /// 人员Id
        /// </summary>
        [DataMember]
        public Guid PersonId { get; set; }
        #endregion

        #region 工厂模型Id —— Guid FacilityId
        /// <summary>
        /// 工厂模型Id
        /// </summary>
        [DataMember]
        public Guid FacilityId { get; set; }
        #endregion


        //导航属性

        #region 导航属性 - 人员 —— PersonInfo PersonInfo
        /// <summary>
        /// 导航属性 - 人员
        /// </summary>
        [DataMember]
        public PersonInfo PersonInfo { get; set; }
        #endregion

        #region 导航属性 - 班组 —— TeamInfo TeamInfo
        /// <summary>
        /// 导航属性 - 班组
        /// </summary>
        [DataMember]
        public TeamInfo TeamInfo { get; set; }
        #endregion

        #region 导航属性 - 工厂模型 —— FacilityInfo FacilityInfo
        /// <summary>
        /// 导航属性 - 工厂模型
        /// </summary>
        [DataMember]
        public FacilityInfo FacilityInfo { get; set; }
        #endregion

        #region 导航属性 - 用户相关终端集 —— IEnumerable<TerminalInfo> RelatedTerminalInfos
        /// <summary>
        /// 导航属性 - 用户相关终端集
        /// </summary>
        [DataMember]
        public IEnumerable<TerminalInfo> RelatedTerminalInfos { get; set; }
        #endregion

        #region 导航属性 - 用户相关工艺段集 —— IEnumerable<ProcessSegmentInfo> RelatedProcessSegmentInfos
        /// <summary>
        /// 导航属性 - 用户相关工艺段集
        /// </summary>
        [DataMember]
        public IEnumerable<ProcessSegmentInfo> RelatedProcessSegmentInfos { get; set; }
        #endregion

        #region 导航属性 - 用户相关储存位置集 —— IEnumerable<UserRelatedStorageLocationInfo> RelatedStorageLocationInfos
        /// <summary>
        /// 导航属性 - 用户相关储存位置集
        /// </summary>
        [DataMember]
        public IEnumerable<UserRelatedStorageLocationInfo> RelatedStorageLocationInfos { get; set; }
        #endregion
    }
}
